package testJdk.commonUse.collections.map;

import org.junit.Test;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @author keyer
 * @Description : 描述
 * Created by cyd on 2021-03-16 16:53:53
 */
public class TestHashMap {

    /**
     * map的基本用法
     */
    @Test
    public void test01() {
        HashMap<Object, Object> hashMap = new HashMap<>();
        hashMap.put("0", "0");
        hashMap.put("1", "1");
        hashMap.put("2", "2");
        Set<Map.Entry<Object, Object>> entries = hashMap.entrySet();
        for (Map.Entry e : entries) {
            System.out.println(e.getValue());
        }
        System.out.println("------------------------");
        Object o = hashMap.get("5");
        System.out.println(o);
    }

    /**
     * map.getOrDefault
     * 如果 在Map中存在key，则返回key所对应的的value。
     * 如果 在Map中不存在key，则返回默认值。
     * 可以用于统计String中的字符个数
     */
    @Test
    public void test02() {
        String str = "abcdeefff";
        Map<Character, Integer> map = new HashMap<>();

        // 统计各字母个数
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            Integer oldValue = map.getOrDefault(c, 0);
            map.put(c, oldValue + 1);
        }
        System.out.println(map);
    }
}
